In today's technological environment, it is common for individuals, business enterprises and other organizations to utilize computer-networked based, real-time communications such as peer-to-peer audio calls and video conferencing. Such real-time communications harness the power of the global, public Internet to allow greater communications and collaboration over long distances, increase productivity and save on travel cost. The real time communications involve information in various forms (e.g., voice, data, graphics, text, and digital) conveyed (i.e., transmitted and/or received) over a digital communication network (i.e., a computer communication network) wherein information is conveyed using packets. Many times these communication networks use the technique of packet switching where a transmitted packet may traverse several nodes within the communication network before it reaches its ultimate destination node.
A packet is a group of bits arranged and/or formatted in accordance with a particular protocol of a communication standard. Communication standards dictate how information is conveyed (i.e., transmitted and/or received) over digital communication networks (e.g., the Internet) and may use one or more protocols to define the arrangement, format, and interpretation of various portions of the packet. The various portions of a packet and their interpretation are defined by the protocol. A packet usually comprises a packet header and a packet payload. The packet header contains information describing particular characteristics of the information being conveyed in the packet. For example, the packet header may contain information that describes the type of information being conveyed (e.g., voice, video or graphics), the ultimate destination of the packet, the time at which the packet was transmitted, the particular source from which the packets was transmitted and other such information. The packet payload contains the actual information (e.g., voice, video or graphics) that is being transmitted.
For real-time communications (e.g., video or voice), delay in receiving communication packets, loss of packets, and/or receiving corrupted packets cannot be tolerated because of the nature of such communications. One technique that is used to address these undesirable phenomena is to retransmit the lost, delayed and/or corrupted packets of information. However this approach of retransmitting packets is costly as it requires additional bandwidth and often causes additional delays.
One particular protocol used for the conveyance of real-time information over a digital communication network such as the Internet is the Real time Transport Protocol (RTP) (e.g., Request For Comments 3550 or RFC 3550). The term RTP will hereinafter represent an overall protocol such as, for example, RFC 3550. In a communication network that is operated in accordance with the RTP, information is conveyed using RTP packets which are represented by a group of bits. RTP does not use the technique of retransmission, but uses Forward Error Correction (FEC) to detect errors in received packets and to recover lost packets. Forward Error Correction is a type of coding used in digital communication networks where, prior to transmission of the information, a certain coding operation (also called a protection operation) is performed on various portions of or the entire packet of information to generate redundant bits. Some well-known examples of this coding operation used in FEC include Exclusive-OR (XOR) operation, parity bit coding, Reed-Solomon (RS) coding and Hamming coding. The redundant bits are rearranged (i.e., formatted) in accordance with a protocol to form “protected” packets or packets carrying protected information. The information bits subjected to a coding operation prior to transmission are thus protected because any errors in such bits can be corrected and lost packets can be recovered at the ultimate destination nodes of the network using the same coding operation. The terms “coding operation” and “protection operation” will be used interchangeably within this disclosure to represent the FEC operation described above.
Packets, in real-time communications applications, are often called media packets. Certain information describing various aspects of the media payload is appended to the beginning of the media payload; this appended portion is called the media header. That is, the media header is a group of bits that describe, for example, the destination of the packet, the type of information that is contained in the media payload, the time at which the packet was transmitted, the source from which the packet was transmitted and other such types of information. The media header is appended to the media payload to form a media packet.
Coding of a media header and media payload using FEC results in the generation of redundant information that can be formed, in accordance with the RTP, into an FEC packet having header and payload portions. The FEC packet formed from the coding of the media packet thus contains protected information and is said to be associated with the media packet. The FEC packets are used to reconstruct (i.e., recover) lost media packets and/or to correct errors in media packets that are received but are corrupt. Both the media packets and the associated FEC packets are transmitted to their destination. At the destination, the receiving equipment, using the FEC packets, is able to detect the occurrence of lost media packets and/or corrupted media packets. For packets that are lost or corrupted, the receiving equipment, in a well-known fashion and in accordance with the RTP, performs the same protection operation performed at the transmit end and arranges the resulting bits (as per the RTP) to recover lost packets and/or correct corrupted packets.
In many current applications of real time communications where information is conveyed over computer networks, often a server is used to receive different packets carrying different types of information from a plurality of sources. The server may, for example, be part of a communication network infrastructure used in conducting video/voice conferencing between individuals located at various locations remote from each other. The server typically performs the same protection operation (as at the transmit end) on at least a portion of each received FEC packets in order to detect corrupted media packets and to recover lost media packets. The server then regenerates new FEC packets, which it then transmits along with the media packets to the ultimate destinations of these packets. As a result of processing many different packets from different sources for one conference, the processing that is done by the server becomes burdensome and particularly costly in terms of CPU time and memory usage. Moreover, the overall cost of managing the server and/or the communication network also increases.
Given the foregoing, what are needed are systems, methods and computer program products for facilitating the recovery of lost real-time media packets within real-time applications executing within a computer network implementing FEC such that server performance is not affected from a CPU and memory perspective.